home *** CD-ROM | disk | FTP | other *** search
- #include <Memory.h>
- #include <StdIO.h>
- #include "CIncludesCode.h"
-
- extern Handle database;
- extern dataHeaderType dataHeader;
-
-
-
- char *getDictionaryPtr( char ch )
- {
- long offset;
-
- offset = dataHeader.dictionaryOffsets[ dictionaryIndex( ch ) ];
- return ( StripAddress(*database) + offset );
- }
-
-
- char *getNamePtr( short index )
- {
- strArray *sp = (strArray*) (*database + dataHeader.nameArrayOffset);
-
- return ( (char*) ((*sp)[index]) );
- }
-
-
- char *search( char *s, char* dictPtr ) // returns pointer or NIL
- {
- char *p = dictPtr + (4 + 2 + 4); // endOffset = 4, fileIndex = 2, filePosition = 4
-
- char *limit = dictPtr + *((long*) dictPtr);
-
- if ( *s )
- while ( p < limit )
- if ( strcmp( p, s ) == 0 )
- return ( p - (2 + 4) ); // fileIndex = 2, filePosition = 4
- else
- p += strlen( p ) + (2 + 4 + 1); // fileIndex = 2, filePosition = 4, '\0' = 1
- return 0;
- }
-
-
- Boolean locateIdentifier( char *dest, long *filePosition, char *src )
- {
- char *entryPtr = search( src, getDictionaryPtr( *src ) );
- char *p;
-
- if ( entryPtr )
- {
- p = getNamePtr( getShort( entryPtr ) );
- strcpy( dest, p );
-
- *filePosition = getLong( entryPtr + 2 );
- }
-
- return ( (Boolean) entryPtr );
- }
-
-